﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;


namespace Arthus
{
    public partial class stavkaDostavnice : Form
    {
        public static string IDstavke;
        public static string IDartikla;
        public stavkaDostavnice(string StavkaID, string ArtikalID)
        {
            InitializeComponent();
            IDstavke = StavkaID;
            IDartikla = ArtikalID;
            //punjenje combobox-ova
            posjedObjekat = new Posjed();
            posjedObjekat.PopuniComboBoxVeleprodaja(comboBoxIzVeleprodaje);
            posjedObjekat.PopuniComboBoxMaloprodaja(comboBoxUMaloprodaju);
            //postavljanje pojedinih polja da budu ReadOnly
            textBoxKataloskiBroj.ReadOnly = true;
            textBoxPDVstopa.ReadOnly = true;
            textBoxVPCenaArtikla.ReadOnly = true;
            textBoxKolicinaArtikla.ReadOnly = true;
            textBoxArtikalNaziv.ReadOnly = true;
            textBoxIspodArtiklaNaziv.ReadOnly = true;
            textBoxMPCenaArtikla.ReadOnly = true;
            textBoxIspodMPCenaArtikla.ReadOnly = true;
            textBoxVPVrednost.ReadOnly = true;
            textBoxUkalkulisanaCena.ReadOnly = true;
            textBoxMPVrednost.ReadOnly = true;
            textBoxVrednostNivelacije.ReadOnly = true;
        }
        STV stvObjekat = null;
        STV stvObjekat2 = null;
        STV stvObjekat3 = null;
        Posjed posjedObjekat = null;
        Artikal artikalObjekat = null;
        ZAG zagObjekat = null;

        private void stavkaDostavnice_Load(object sender, EventArgs e)
        {
            PodesiKontrolePremaProknjizenosti();
        }
        private void stavkaDostavnice_FormClosing(object sender, FormClosingEventArgs e)//kada se forma gasi
        {
            IDartikla = null;
            IDstavke = null;
        }

        private void PodesiKontrolePremaProknjizenosti() {
            zagObjekat = new ZAG();
            stvObjekat = new STV();
            if (dostavnicaForma.IDzaglavlja == 0)
            {
                buttonDodaj.Enabled = false;
                buttonIzmeni.Enabled = false;
            }
            else if (zagObjekat.ProveraProknjizenDokumentIliNe(Convert.ToInt32(dostavnicaForma.IDzaglavlja)))
            {
                buttonDodaj.Enabled = false;
                buttonIzmeni.Enabled = false;
            }
            else if (textBoxArtikalNaziv.Text.Length > 0)
            {
                if (stavkaDostavnice.IDstavke.Length>0 && stvObjekat.PostojiUBaziIliNeNaOsnovuID(Convert.ToInt32(stavkaDostavnice.IDstavke)))
                {
                    buttonDodaj.Enabled = true;
                    buttonIzmeni.Enabled = true;
                }
                else {
                    buttonDodaj.Enabled = true;
                    buttonIzmeni.Enabled = false;
                }
            }
            else
            {
                buttonDodaj.Enabled = false;
                buttonIzmeni.Enabled = false;
            }

        }

        private void stavkaDostavnice_Activated(object sender, EventArgs e)
        {
            stvObjekat = new STV();
            stvObjekat.PopuniKontroleUStavkaDostavniceFormi(comboBoxIzVeleprodaje, textBoxKataloskiBroj, textBoxPDVstopa, textBoxVPCenaArtikla, textBoxKolicinaArtikla,
                textBoxArtikalNaziv, textBoxIspodArtiklaNaziv, textBoxMPCenaArtikla, textBoxIspodMPCenaArtikla, comboBoxUMaloprodaju, textBoxKolicina,
                textBoxVPCena, textBoxVPVrednost, textBoxMPMarza, textBoxUkalkulisanaCena, textBoxMPCena, textBoxMPVrednost, textBoxKolicinaZaNivelaciju,
                textBoxVrednostNivelacije);
            PopunjavanjeTextBoxovaPosleUnosaNekihBrojevaPrvoMarza();
            PodesiKontrolePremaProknjizenosti();
        }

        private void textBoxKolicina_KeyPress(object sender, KeyPressEventArgs e) //kada se unese neka vrednost u kolicina polje
        {
            Razno.DozvoliUnosSamoBrojevaIJedneTackeIMinusa(sender, e);
        }
        private void textBoxVPCena_KeyPress(object sender, KeyPressEventArgs e)
        {
            Razno.DozvoliUnosSamoBrojevaIJedneTacke(sender, e);
        } //kada se unese neka vrednost u kolicina polje
        private void textBoxVPVrednost_KeyPress(object sender, KeyPressEventArgs e)
        {
            Razno.DozvoliUnosSamoBrojevaIJedneTacke(sender, e);
        } //kada se unese neka vrednost u kolicina polje
        private void textBoxMPMarza_KeyPress(object sender, KeyPressEventArgs e)
        {
            Razno.DozvoliUnosSamoBrojevaIJedneTackeIMinusa(sender, e);
        } //kada se unese neka vrednost u kolicina polje

        private void textBoxMPMarza_TextChanged(object sender, EventArgs e)
        {
            Razno.DozvoliMinusSamoNaPocetku(textBoxMPMarza);
        }
        private void textBoxUkalkulisanaCena_KeyPress(object sender, KeyPressEventArgs e)
        {
            Razno.DozvoliUnosSamoBrojevaIJedneTacke(sender, e);
        } //kada se unese neka vrednost u kolicina polje
        private void textBoxMPCena_KeyPress(object sender, KeyPressEventArgs e)
        {
            Razno.DozvoliUnosSamoBrojevaIJedneTacke(sender, e);
        } //kada se unese neka vrednost u kolicina polje
        private void textBoxMPVrednost_KeyPress(object sender, KeyPressEventArgs e)
        {
            Razno.DozvoliUnosSamoBrojevaIJedneTacke(sender, e);
        } //kada se unese neka vrednost u kolicina polje
        private void textBoxKolicinaZaNivelaciju_KeyPress(object sender, KeyPressEventArgs e)
        {
            Razno.DozvoliUnosSamoBrojevaIJedneTacke(sender, e);
        } //kada se unese neka vrednost u kolicina polje
        private void textBoxVrednostNivelacije_KeyPress(object sender, KeyPressEventArgs e)
        {
            Razno.DozvoliUnosSamoBrojevaIJedneTacke(sender, e);
        } //kada se unese neka vrednost u kolicina polje

        private void PopunjavanjeTextBoxovaPosleUnosaNekihBrojevaPrvoMarza() {
            if (textBoxKolicina.Text.Trim().Length > 0 && textBoxVPCena.Text.Trim().Length > 0
                && textBoxVPVrednost.Text.Trim().Length > 0 && textBoxMPMarza.Text.Trim().Length > 0 && textBoxUkalkulisanaCena.Text.Trim().Length > 0
                && textBoxMPCena.Text.Trim().Length > 0 && textBoxMPVrednost.Text.Trim().Length > 0 && textBoxKolicina.Text.Trim().Length > 0 
                && textBoxKolicina.Text!="-" && textBoxKolicina.Text!=".")
                {
                    try
                    {
                        labelPoruka.Text = "";
                        buttonDodaj.Enabled = true;
                        buttonIzmeni.Enabled = true;
                        if (textBoxKolicinaArtikla.Text.Length > 0)
                        {
                            if (Convert.ToDecimal(String.Format("{0:0.00}", Convert.ToDecimal(textBoxKolicina.Text)))
                                > Convert.ToDecimal(String.Format("{0:0.00}", Convert.ToDecimal(textBoxKolicinaArtikla.Text))))
                            { //ukoliko broj je polju kolicina vece od broja u kolicina artikla
                                textBoxKolicina.ForeColor = Color.Red;
                            }
                            else
                            {
                                textBoxKolicina.ForeColor = Color.Black;
                            }
                        }
                        if (Convert.ToDecimal(textBoxVPCena.Text) != 0)
                        {
                            decimal RUC = (Convert.ToDecimal(textBoxMPCena.Text) * 100 / 120) - Convert.ToDecimal(textBoxVPCena.Text);
                            textBoxMPMarza.Text = String.Format("{0:0.00}", RUC * 100 / Convert.ToDecimal(textBoxVPCena.Text));
                        }
                        if (Convert.ToDecimal(textBoxKolicina.Text) != 0 && Convert.ToDecimal(textBoxVPCena.Text) != 0)
                        {
                            textBoxVPVrednost.Text = String.Format("{0:0.00}", Convert.ToDecimal(textBoxKolicina.Text) * Convert.ToDecimal(textBoxVPCena.Text));
                        }
                        else
                        {
                            textBoxVPVrednost.Text = "" + 0.00m;
                        }
                        if (Convert.ToDecimal(textBoxKolicina.Text) != 0 && Convert.ToDecimal(textBoxVPCena.Text) != 0)
                        {
                            textBoxMPVrednost.Text = String.Format("{0:0.00}", Convert.ToDecimal(textBoxKolicina.Text) * Convert.ToDecimal(textBoxMPCena.Text));
                        }
                        else
                        {
                            textBoxMPVrednost.Text = "" + 0.00m;
                        }
                        if (Convert.ToDecimal(textBoxMPCena.Text) != 0)
                        {
                            textBoxUkalkulisanaCena.Text = textBoxMPCena.Text;
                        }
                        if (Convert.ToDecimal(textBoxMPMarza.Text) == 0)
                        {
                            textBoxMPMarza.Text = "0.00";
                        }
                        /*if (Convert.ToDecimal(textBoxKolicinaZaNivelaciju.Text) > 0) { 
                        textBoxVrednostNivelacije.Text=string.Format("{0:0.00}", Convert.ToDecimal(textBoxKolicinaZaNivelaciju.Text)*(Convert.ToDecimal(textBoxMPCena.Text)-
                            Convert.ToDecimal(textBoxMPCenaArtikla.Text)));
                        }*/
                    }
                    catch (FormatException fe) {
                        labelPoruka.Text = "Minus mora biti na početku!";
                        buttonDodaj.Enabled = false;
                        buttonIzmeni.Enabled = false;
                    }
                }
            }

        private void textBoxKolicina_KeyUp(object sender, KeyEventArgs e) //kada se unese neka vrednost u kolicina polje pa odmah posle toga
        {
            PopunjavanjeTextBoxovaPosleUnosaNekihBrojevaPrvoMarza();
        }

        private void textBoxVPCena_KeyUp(object sender, KeyEventArgs e) //kada se unese vrednost u polje veleprodajna cena pa odmah posle toga
        {
            PopunjavanjeTextBoxovaPosleUnosaNekihBrojevaPrvoMarza();
        }
        private void textBoxMPCena_KeyUp(object sender, KeyEventArgs e) //kada se unese vrednost u polje maloprodajna cena i odmah posle toga
        {
            PopunjavanjeTextBoxovaPosleUnosaNekihBrojevaPrvoMarza();
        }

        private void textBoxMPMarza_KeyUp(object sender, KeyEventArgs e) //kada se unese vrednost u polje maloprodajna marza i odmah posle toga
        {
            if (Convert.ToDecimal(textBoxVPCena.Text) != 0)
            {
                textBoxUkalkulisanaCena.Text = String.Format("{0:0.00}",
                    ((Convert.ToDecimal(textBoxVPCena.Text) + (Convert.ToDecimal(textBoxMPMarza.Text) * Convert.ToDecimal(textBoxVPCena.Text)) / 100) * 120) / 100);
            }
            else {
                textBoxVPCena.Text = ""+0.00m;
            }
        }

        private void textBoxIzborArtiklaPremaOznaci_KeyDown(object sender, KeyEventArgs e) //prilikom pritiska tastera u textbox-u
        {
            if (e.KeyCode == Keys.Enter)//ukoliko se unese taster Enter
            {
                this.Cursor = Cursors.WaitCursor;
                artikalObjekat = new Artikal();
                artikalObjekat.PretragaArtikalaStavkaDostavniceForma(textBoxIzborArtiklaPremaKataloskomBroju, textBoxIzborArtiklaPremaOznaci, textBoxKataloskiBroj, textBoxPDVstopa, textBoxVPCenaArtikla,
                    textBoxKolicinaArtikla, textBoxArtikalNaziv, textBoxMPCenaArtikla, textBoxVPCena, textBoxMPCena);
                stvObjekat = new STV();
                stvObjekat.PopuniKontroleUStavkaDostavniceFormi(comboBoxIzVeleprodaje, textBoxKataloskiBroj, textBoxPDVstopa, textBoxVPCenaArtikla, textBoxKolicinaArtikla,
                    textBoxArtikalNaziv, textBoxIspodArtiklaNaziv, textBoxMPCenaArtikla, textBoxIspodMPCenaArtikla, comboBoxUMaloprodaju, textBoxKolicina,
                    textBoxVPCena, textBoxVPVrednost, textBoxMPMarza, textBoxUkalkulisanaCena, textBoxMPCena, textBoxMPVrednost, textBoxKolicinaZaNivelaciju,
                    textBoxVrednostNivelacije);
                PopunjavanjeTextBoxovaPosleUnosaNekihBrojevaPrvoMarza();
                PodesiKontrolePremaProknjizenosti();
                this.Cursor = Cursors.Default;
            }
            if (textBoxIzborArtiklaPremaKataloskomBroju.Text.Length>0)
            {
                TABKaoENTER(e);
            }
        }
        private void textBoxIzborArtiklaPremaKataloskomBroju_KeyDown(object sender, KeyEventArgs e)//prilikom pritiska tastera u textbox-u
        {
            if (e.KeyCode == Keys.Enter)//ukoliko se unese taster Enter
            {
                this.Cursor = Cursors.WaitCursor;
                artikalObjekat = new Artikal();
                artikalObjekat.PretragaArtikalaStavkaDostavniceForma(textBoxIzborArtiklaPremaKataloskomBroju, textBoxIzborArtiklaPremaOznaci, textBoxKataloskiBroj, textBoxPDVstopa, textBoxVPCenaArtikla,
                    textBoxKolicinaArtikla, textBoxArtikalNaziv, textBoxMPCenaArtikla, textBoxVPCena, textBoxMPCena);
                stvObjekat = new STV();
                stvObjekat.PopuniKontroleUStavkaDostavniceFormi(comboBoxIzVeleprodaje, textBoxKataloskiBroj, textBoxPDVstopa, textBoxVPCenaArtikla, textBoxKolicinaArtikla,
                    textBoxArtikalNaziv, textBoxIspodArtiklaNaziv, textBoxMPCenaArtikla, textBoxIspodMPCenaArtikla, comboBoxUMaloprodaju, textBoxKolicina,
                    textBoxVPCena, textBoxVPVrednost, textBoxMPMarza, textBoxUkalkulisanaCena, textBoxMPCena, textBoxMPVrednost, textBoxKolicinaZaNivelaciju,
                    textBoxVrednostNivelacije);
                PopunjavanjeTextBoxovaPosleUnosaNekihBrojevaPrvoMarza();
                PodesiKontrolePremaProknjizenosti();
                this.Cursor = Cursors.Default;
            }
            if (textBoxIzborArtiklaPremaKataloskomBroju.Text.Length > 0)
            {
                TABKaoENTER(e);
            }
        }

        private void buttonDodaj_Click(object sender, EventArgs e) //prilikom klika na dugme Dodaj
        {
            artikalObjekat = new Artikal();
            artikalObjekat.PromenaMPCeneArtikla(textBoxMPCena, Convert.ToInt32(IDartikla));
            zagObjekat = new ZAG();
            zagObjekat.PromenaUZAGPrilikomUnosaNoveStavkeDostavnica(Convert.ToDecimal(textBoxMPMarza.Text), Convert.ToInt32(dostavnicaForma.IDzaglavlja));
            stvObjekat = new STV();
            stvObjekat.UnosNoveStavkeKrozDostavnicu(comboBoxIzVeleprodaje, comboBoxUMaloprodaju, textBoxKolicina, textBoxVPCena, textBoxVPVrednost, textBoxMPMarza,
                textBoxUkalkulisanaCena, textBoxMPCena, textBoxMPVrednost, textBoxKolicinaZaNivelaciju, textBoxVrednostNivelacije, textBoxPDVstopa, textBoxKolicinaArtikla);
            stvObjekat2 = new STV();
            stvObjekat2.UnosNoveStavkeKrozDostavnicu2(comboBoxIzVeleprodaje, comboBoxUMaloprodaju, textBoxKolicina, textBoxVPCena, textBoxVPVrednost, textBoxMPMarza,
                textBoxUkalkulisanaCena, textBoxMPCena, textBoxMPVrednost, textBoxKolicinaZaNivelaciju, textBoxVrednostNivelacije, textBoxPDVstopa, textBoxKolicinaArtikla);
            VratiSveKontroleNaPocetak();
        }
        private void VratiSveKontroleNaPocetak() {
            comboBoxIzVeleprodaje.SelectedIndex = 0;
            textBoxIzborArtiklaPremaKataloskomBroju.Text = "";
            textBoxIzborArtiklaPremaOznaci.Text = "";
            comboBoxUMaloprodaju.SelectedIndex = 0;
            textBoxKolicina.Text = "0.000";
            textBoxVPCena.Text = "0.00";
            textBoxVPVrednost.Text = "0.00";
            textBoxMPMarza.Text = "0.00";
            textBoxUkalkulisanaCena.Text = "0.00";
            textBoxMPCena.Text = "0.00";
            textBoxMPVrednost.Text = "0.00";
            textBoxKolicinaZaNivelaciju.Text = "0.000";
            textBoxVrednostNivelacije.Text = "0.00";
            IDartikla = "";
            IDstavke = "";
            comboBoxIzVeleprodaje.Focus();
        }

        private void buttonIzmeni_Click(object sender, EventArgs e)//kada se klikne na dugme Izmeni
        {
            artikalObjekat = new Artikal();
            artikalObjekat.PromenaMPCeneArtikla(textBoxMPCena, Convert.ToInt32(IDartikla));
            zagObjekat = new ZAG();
            zagObjekat.PromenaUZAGPrilikomUnosaNoveStavkeDostavnica(Convert.ToDecimal(textBoxMPMarza.Text), Convert.ToInt32(dostavnicaForma.IDzaglavlja));
            stvObjekat = new STV();
            stvObjekat.IzmenaStavkeKrozDostavnicu(comboBoxIzVeleprodaje, comboBoxUMaloprodaju, textBoxKolicina, textBoxVPCena, textBoxVPVrednost, textBoxMPMarza,
                textBoxUkalkulisanaCena, textBoxMPCena, textBoxMPVrednost, textBoxKolicinaZaNivelaciju, textBoxVrednostNivelacije, textBoxPDVstopa, textBoxKolicinaArtikla,
                Convert.ToInt32(IDartikla), Convert.ToInt32(IDstavke));
            stvObjekat2 = new STV();
            stvObjekat2.IzmenaStavkeKrozDostavnicu2(comboBoxIzVeleprodaje, comboBoxUMaloprodaju, textBoxKolicina, textBoxVPCena, textBoxVPVrednost, textBoxMPMarza,
                textBoxUkalkulisanaCena, textBoxMPCena, textBoxMPVrednost, textBoxKolicinaZaNivelaciju, textBoxVrednostNivelacije, textBoxPDVstopa, textBoxKolicinaArtikla,
                Convert.ToInt32(IDartikla), Convert.ToInt32(IDstavke));
            //stvObjekat3 = new STV();
            if (Convert.ToDecimal(textBoxKolicina.Text) > 0 )
            {
                this.Close();
            }
        }

        private void buttonZatvori_Click(object sender, EventArgs e) //kada se klikne na dugme Zatvori
        {
            this.Close();
        }

        private void TABKaoENTER(KeyEventArgs e)
        {
            if (e.KeyData == Keys.Enter)
            {
                e.SuppressKeyPress = true;
                SelectNextControl(ActiveControl, true, true, true, true);
            }
        }
        private void comboBoxIzVeleprodaje_KeyDown(object sender, KeyEventArgs e)
        {
            TABKaoENTER(e);
        }
        private void comboBoxUMaloprodaju_KeyDown(object sender, KeyEventArgs e)
        {
            TABKaoENTER(e);
        }
        private void textBoxKolicina_KeyDown(object sender, KeyEventArgs e)
        {
            TABKaoENTER(e);
        }
        private void textBoxVPCena_KeyDown(object sender, KeyEventArgs e)
        {
            TABKaoENTER(e);
        }
        private void textBoxMPCena_KeyDown(object sender, KeyEventArgs e)
        {
            TABKaoENTER(e);
        }
        private void textBoxKolicinaZaNivelaciju_KeyDown(object sender, KeyEventArgs e)
        {
            TABKaoENTER(e);
        }
        private void textBoxMPMarza_KeyDown(object sender, KeyEventArgs e)
        {
            TABKaoENTER(e);
        }

    }
}
